package fr.ginvest.implementation;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import fr.ginvest.entity.Stade;
import fr.ginvest.entity.Stade.Etape;
import fr.ginvest.interfaces.StadeFacadeRemote;

@Stateless
public class StadeFacade implements StadeFacadeRemote {

	@PersistenceContext
	protected EntityManager entityMgr;
	
	
	public StadeFacade() {}
	
	public StadeFacade(EntityManager entityMgr) {
		this.entityMgr = entityMgr;
	}
	

	@Override
	public Stade addStade(Stade stade) {
		entityMgr.persist(stade);
		return stade;
	}

	@Override
	public Stade findStadeById(int id) {
		return entityMgr.find(Stade.class, id);
	}

	@Override
	public Stade updateStade(Stade stade) {
		return entityMgr.merge(stade);
	}

	@Override
	public void deleteStade(Stade stade) {
		entityMgr.remove(stade);

	}

	@Override
	public Stade nextStade(Stade lastStade) {
		Etape nextEtape = Etape.CANDIDATURE;
	
		if(lastStade!=null){
			Etape etape = lastStade.getEtape();	
			switch(etape) {
				case CANDIDATURE: nextEtape = Etape.EXPOSITION;
					break;
				case EXPOSITION: nextEtape = Etape.AUDIT;
					break;
				case AUDIT: nextEtape = Etape.NEGOCIATION;
					break;
				case NEGOCIATION: nextEtape = Etape.ENGAGEMENT;
					break;
				default: nextEtape = Etape.CANDIDATURE;
			}
		}
		Stade nextStade = new Stade(nextEtape);
		return nextStade;
	}

}
